export default {
    initHash(routerdata: any = {}) {
        window.addEventListener('hashchange', () => {
            routerdata.hash = window.location.hash?.replace('#', '') || '';
            // console.log('Hash changed to:', routerdata);
            this.setRouter(routerdata);
        });
    },
    // 获取当前页面的完整 URL
    getHref() {
        return window?.location?.href;
    },

    // 设置 URL 的 hash 值
    setHash(routerdata: any = {}, value: string = '') {
        // 确保 hash 值以斜杠开头
        if (value && !value.startsWith('/')) {
            value = `/${value}`;
        }
        // 更新 routerdata 的 hash 属性
        routerdata.hash = value || '';
        // 更新浏览器地址栏的 hash 值
        window.location.hash = routerdata.hash;
    },

    // 解析查询参数
    getQuery(routerdata: any = {}, querystr: string = ''): string {
        // 重置查询参数对象
        routerdata.query = {};
        if (querystr) {
            // 分割查询参数并遍历
            querystr.split('&').forEach((pair) => {
                const [key, value] = pair.split('=');
                if (key && value) {
                    // 解码并存储查询参数
                    routerdata.query[key] = decodeURIComponent(value);
                }
            });
        }
        // 若没有查询参数，直接返回原始字符串
        return routerdata.query;
    },

    // 将 hash 字符串拆分成数组
    getHasharr(routerdata: any) {
        let hash: string = routerdata.hash;
        routerdata.hasharr = [];
        if (hash) {
            // 去除 hash 开头的斜杠
            if (hash.startsWith('/')) {
                hash = hash.slice(1);
            }
            // 分割 hash 为路径和查询参数部分
            const [pathPart, queryPart] = hash.split('?');
            // 分割路径部分为数组
            let parts = pathPart?.split('/') || [];
            // 移除数组末尾的空字符串
            while (parts.length > 0 && parts[parts.length - 1] === '') {
                parts.pop();
            }
            routerdata.hasharr = parts;
            this.getQuery(routerdata, queryPart);
        }
        return routerdata.hasharr;
    },

    // 设置路由组件信息
    setRouter(routerdata: any) {
        this.getHasharr(routerdata);
        const hasharr = routerdata.hasharr || [];
        const hasharrlen: number = routerdata.hasharr?.length || 0;
        routerdata.comps = [];
        if (hasharrlen > 0) {
            let curcomp: string = '';
            for (let i = 0; i < hasharrlen; i++) {
                curcomp = `${curcomp}${hasharr[i]}/`;
                if (i == hasharrlen - 1) {
                    routerdata.comps[i] = `${curcomp}default`;
                } else {
                    routerdata.comps[i] = `${curcomp}index`;
                }
            }
        }
        if (!routerdata.comps?.length) {
            routerdata.comps[0] = 'default';
        }
        return routerdata.comps;
    },
    setTitle(title: string = '', ujt: any = null) {
        if (title) {
            document.title = `${title}${ujt?.$global?.lang?.sys?.webtit?' - '+ujt?.$global?.lang?.sys?.webtit:''}`;
        } else {
            document.title = `${ujt?.$global?.lang?.sys?.webtit}`;
        }
    },
};
